Method for correcting a burst of errors plus random errors

ABSTRACT

An efficient method for finding all the possible corrections of a bust of length b and e random errors consists of finding a polynomial whose roots are the candidate location for l— the location of the beginning of the burst—thus avoiding the search over all possible values of l (it is assumed that the burst is non-trivial, i.e., at least one of its errors has a non-zero value). In order to reduce the number of spurious solutions, it is assumed that the number of syndromes is t=2e+b+s, where s is at least 2. The larger the value of s the less likely it is that the algorithm will generate “spurious” solutions. Once the location of the burst is known, standard procedures are used to determine the magnitudes of the burst errors and the location and magnitude of the random errors.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The present invention generally relates to coding in informationand data processing systems and, more particularly, to a method forcorrecting a bust of errors plus random errors in data. Such errors may,for example, originate from reading data from a disk drive storing thedata.

[0003] 2. Background Description

[0004] Many methods are known for correcting random errors in codes withcheck symbols. Reed-Solomon codes are designed to correct random errors.If the code has t syndromes then the minimum distance between two codewords is t+1 so at most t/2 random errors can be corrected. If some ofthe errors are erasure errors (i.e., their location is known) then eerasure errors and r random errors can be corrected as long as 2r+e doesnot exceed t. Methods for correcting those errors are known, and are nota part of this invention.

[0005] In many cases it is known that errors may occur in bursts as wellas at random locations. For some applications, such as in correctingerrors while reading magnetic disks, it is known (or suspected) that aburst of b errors (some of which may have the value 0, i.e., no erroroccurred at those locations) have occurred (a burst of b errors is berrors whose locations are contiguous) in addition to e random errors.In this case 2e+b+1 cannot exceed t. The usual method for correcting aburst of b errors in addition to e random errors is to start with l=0 (lbeing the location of the start of the burst) and treat the locations l,l+1, . . . , as the location of b erasure errors, and employ one of theknown methods for correcting b erasure errors (whose locations are l,l+1, . . . , l+b−1) and e random errors. The value of l is then changedto l+1, and the process repeated. It should be emphasized that there maybe multiple solutions to a burst of b errors and e random errors, andsome other criterion has to be used to resolve this ambiguity when itarises. The drawback of this method is that as many values of l as thelength of the code must be checked (more precisely, the length of thecode minus (b−1)). Typically, the value of l ranges from 170 to 500-600.

SUMMARY OF THE INVENTION

[0006] It is therefore an object of the present invention to provide anefficient method for finding all the possible corrections of a burst oflength b and e random errors.

[0007] According to the invention, the method consists of finding apolynomial whose roots are the candidate location for l— the location ofthe beginning of the burst—thus avoiding the search over all possiblevalues of l (it is assumed that the burst is non-trivial, i.e., at leastone of its errors has a non-zero value). Since the method is mosteffective for a small e, the invention will be first described for themethod in general, followed by a description of the method for e=0, 1,or 2. Also, in order to reduce the number of spurious solutions, it isassumed that t=2e+b+s, where s is at least 2. The larger the value of s,the less likely it is that the algorithm will generate “spurious”solutions.

[0008] Once the location of the burst is known, standard procedures areused to determine the magnitudes of the burst errors and the locationand magnitude of the random errors. A method, similar to the disclosedmethod, for a pure burst (i.e., e=0) appeared in the paper “Aburst-error-correcting Algorithm for Reed-Solomon Codes” by J. Chen andP. Owsley in IEEE Transactions on Information Theory, Vol. 38, No. 6,November 1992, pp. 1807-1812. This method also finds a polynomial whoseroots indicate the location of the burst; however, the details offinding the polynomial of Chen and Owsley are different from the onedisclosed here. Some of the differences between our method and the oneof Chen and Owsley will be pointed out when we describe out method fore=0.

BRIEF DESCRIPTION OF THE DRAWINGS

[0009] The foregoing and other objects, aspects and advantages will bebetter understood from the following detailed description of a preferredembodiment of the invention with reference to the drawings, in which:

[0010]FIG. 1 is a block diagram of an apparatus in which the claimedinvention may be implemented;

[0011]FIG. 2 is a flow diagram of the initialization process performedprior to the process for correcting a bust of errors plus random errors;

[0012]FIGS. 3A and 3B, taken together, is a flow diagram of the processimplemented by the method according to the invention for correcting aburst of errors plus a generalized number of random errors;

[0013]FIG. 4 is a flow diagram of the process implemented by the methodaccording to the invention for correcting a burst of errors and norandom errors;

[0014]FIGS. 5A and 5B, taken together, is a flow diagram of the processimplemented by the method according to the invention for correcting aburst of errors plus one random error; and

[0015]FIGS. 6A and 6B, taken together, is a flow diagram of the processimplemented by the method according to the invention for correcting aburst of errors plus two random errors.

DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT OF THE INVENTION

[0016] Referring now to the drawings, and more particularly to FIG. 1,there is shown a block diagram of an apparatus on which the presentinvention may be implemented. In this implementation, a magnetic diskdrive 10 having one or more magnetic recording media disks on which dataare recorded provides an analog output signal as recorded data is read.This analog signal is input to a signal detection circuit 12 whichproduces a digital signal output. This digital signal output is a seriesof bits (i.e., “1s” and “0s”) which may have a burst of errors plusrandom errors. These errors are, mainly, the result of noise and minutedefects in the disk which cause a distortion of the analog signal. This,in turn, causes the interpretation of the signal by the signal detectioncircuitry to produce wrong bits.

[0017] The digital output signal is input to an error correction circuit14 which implements the method of correcting a burst of errors plusrandom errors according to the present invention. The output of theerror correction circuit 14 is the corrected digital signal.

[0018] For a “received” code word (r₀, r₁, . . . , r_((n−1))) we denotethe t=2e+b+s syndromes by σ_(i), i=0, 1, . . . , t−1, whereσ_(i)=Ε_(j)r_(j)a^(ij). The syndromes are the inputs to the algorithmsimplemented by the invention.

[0019] The first step in the method is to compute the syndromepolynomials from the syndromes of the received word. This is illustratedin FIG. 2 and is done as follows. For input b, t, syndromes σ_(i), for0≦i≦t−1, as the input 20, let P(x)=II_(j) (x+a^(j))=Ε_(i)p_(i)x^(i),where j ranges from 0 to b−1, and i ranges from 0 to b in function block21. It is important to note that the p_(i)s are computed beforehand anddo not have to be computed every time that the algorithm is run. Thefirst step of the method in function block 22 is to compute the syndromepolynomials S_(j)(x)=Ε_(i)σ_(i+j)×p_(i)×x^(i), for j=0, 1, . . . ,2e+s−1 and i ranges from 0 to b. At times, the length of the burst willbe emphasized and the syndrome polynomials denoted by S_(j)(x;b). Thenext step in function block 23 is to compute V_(b) ⁻¹, where V_(b) isthe Vandermonde matrix V_(b)=(a^(ij)), 0≦i,j≦b−1.

[0020] The method according to the invention will now be described forthe general case of k random errors (e=k). The process is shown in FIGS.3A and 3B, to which reference is now made. The input at block 300 is b,e=k, t, s=t−b−2e, and S_(j)(x, b) for 0≦j≦s−1. We define the k×(k+1)matrix A as the matrix whose (i,j)^(th) element is S_(i+j)(x), wherei=0, 1, . . . , k−1 and j =0, 1, . . . , k. We define the (k+1)×(k+1)matrices B_(i) as having A as the first k rows and (S_(i+k)(x),S_(i+k+1)(x), . . . , S_(i+2k)(x)) as its (k+1)^(st) row for i=0, 1, . .. , s−1. We also define the k×k matrices C_(j) as A with its j^(th)column removed for j=0, 1, . . . , k. In function block 301, thepolynomials Δ_(j)(x)=det (C_(j)) for j=0, 1, . . . , k are computed. Wealso compute the polynomials D_(i)(x)=det(B_(i))=Ε_(j)S_(i+k+j)(x)Δ_(j)(x), for i=0, 1, . . . , s−1, where jranges from 0 to k. If l is the location where the burst begins, thenL=a−l is a root of each of the polynomials D_(i)(x), so in functionblock 302, R(x)=gcd (D₀(x), D₁(x), . . . , D_(s−1)(x)) (the greatestcommon divisor (gcd) of the D_(i)(x)'s) is computed. A determination ismade in decision block 303 as to whether R(x) is zero. If so, thealgorithm is terminated since, in this case no burst errors haveoccurred. The polynomial R(x) has the property that if L=a⁻¹ is one ofits roots, then l is a candidate for the location of the beginning ofthe burst. The degree of R(x) may be large because of “spurious” roots,so the next stages of the method are aimed at reducing its degree, andthus resulting in fewer candidate for 1. In function block 303, wecompute:

G(x)=R(x)/gcd(R(x),R(ax)).

[0021] (Alternatively, G(x)=R(x)/gcd (R(x), R(a⁻¹x)) may be computed.)This is useful when the size of the actual burst was smaller than b—inwhich case several roots of R(x) identify the same burst—and has theeffect of removing this redundancy.

[0022] If L=a⁻¹ is a root of G(x), then the roots of Ε_(j)Δ_(j)(L)y^(j),where j ranges from 0 to k, indicate the locations of the k randomerrors. Thus, Ε_(j)Δ_(j)y^(j) has to have k roots, none of which is 0;that is, Δ₀(L) and Δ_(k)(L) must not vanish. That is accomplished infunction block 305, where we compute:

G′(x)=G(x)/gcd(G(x),Δ₀(x)), and

G″(x)G′(x)/gcd(G′(x),Δ_(k)(x)).

[0023] Of course, we are interested only in the roots of G″(x) which liein the field, and remove all the roots which lie in a larger field. Thisis done in function block 306 where F(x)=gcd (G″(x), x² ^(m) ⁻¹+1) iscomputed. The roots of F(x) are then found in function block 307, andthe method then enters the processing loop at decision block 308 where adetermination is made as to whether all the roots of F(x) wereconsidered. If so, the process exits; otherwise, in function block 309(explained in greater detail in FIG. 3B) we compute the locations andvalues of the k random errors. In FIG. 3B, for every L=a⁻¹ which is aroot of F(x) in input 311, the polynomial T(Y)=Ε_(j)Δ_(j)(L)Y^(j) wherej ranges from 0 to k is considered considered in function block 312, andits k roots are denoted by y_(i)=a^(1(i)). (If it does not have kdistinct roots in the field, or if any of the y_(i)'s is between l andl+b−1, then there is no error pattern with a burst beginning at l, andwe look at the next root of F(x)). A determination is made in decisionblock 313 as to whether all the roots of T(Y) are in the field, and indecision block 314, we check if all the P(L_(i)y_(i,j))'s are not equalto zero; i.e., if the locations of the random errors are not included inthe burst. If not, the process loops forward to function block 315. Thebeginning of the burst is at location 1, and the k random errors are atlocations l(i), i=0, 1, . . . , k−1. In function block 315, we computethe magnitudes of μ₀, μ₁, . . . , μ_(k) of the random errors, that is,we define the k×k matrix W(L) as having (y_(j))^(i) as its (ij)^(th)element (i and j range from 0 to k−1). The vector μ(L)=(μ₀, μ₁, . . .,μ_(k−1))^(T) of the magnitudes of the random errors is computed byμ(L)=D(L)⁻¹W(L)⁻¹ S(L), where D(L) is the diagonal matrixD(L)=diag(P(Ly₀), P(Ly₁), . . . , P(Ly_(k−1))) and S(L)=(S₀(L), S₁(L), .. . , S_(k−1)(L))^(T). To obtain the magnitude of the errors of theburst we compute in function block 316 c=V_(b) ⁻¹×L×(σ+Ε_(i)y_(i)).wherei ranges from 0 to k-1, Vb as in function 23 of FIG. 2, and σ=(σ₀, σ₁,σ₂, . . . , σ_(b−1)))^(T) Returning to FIG. 3A, in function block 310, iis incremented by “1” before the process loops back to decision block308.

[0024] For the case of no random errors (e=0), the general methodsimplifies as is illustrated in FIG. 4. The input at block 40 is b, t,where s=t-b, S_(j)(x, b) for 0≦j≦s−1. There is no need to compute thedeterminants separately, since D_(i)(x)=S_(i)(x), so in function block41, we compute R(x)=gcd (S₀(x), S₁(x), . . . , S_(s−1)(x)), where,again, “gcd” denotes the greatest common divisor. (The method of Chenand Owsley starts with a different polynomial of a larger degree, andtherefore is less efficient.) A determination is made in decision block42 as to whether computed R(x) is equal to zero. If R(x)=0, thealgorithm terminates, since no error occurred; otherwise, in functionblock 43, G(x)=R(x)/gcd (R(x), R(ax)) (to remove redundant solutions incase the length of the actual burst was smaller than b) is computed.(Alternatively, G(x)=R(x)/gcd (R(x), R(a⁻¹x)) may be computed.) Here,too, we differ from Chen and Owsley, who do not describe a mechanism forremoving redundant roots when the length of the burst is shorter than b.Next, in function block 44, F(x)=gcd (G(x), x² ^(m) ⁻¹+1) is computed(to remove all the roots which are not in the field). Chen and Owsley donot have a mechanism for removing roots which are not in the field. Foreach L=a⁻¹ which is a root of F(x), a “received” word with a burst of berrors beginning at I is corrected. Thus, in function block 45, we findall the roots of F(x). A determination is made in decision block 46 atthe beginning of the processing loop as to whether all the roots of F(x)were used. If so, the process exits; otherwise, c=(c₀, c₁ . . . ,C_(b−1))^(T), the vector of corrections, is computed in function block47 as

c=V _(b) ⁻¹ ×L×σ,

[0025] where V_(b) ⁻¹ is as computed in block 23 (FIG. 2) of theinitialization, L is the diagonal matrix L=diag(1, L, . . . , L^(b−1)),and σ=(σ₀, σ₁, σ₂, . . . , σ_(b−1))^(T). Next, i is indexed by “1” infunction block 48 before the process loops back to decision block 46.

[0026] For the case of one random error (e=1), the method is shown inFIGS. 5A and 5B. The reasons for performing the steps are as in thegeneral case e=k described with respect to FIGS. 3A and 3B. The methodproceeds as follows. The input at block 500 is b, t, where s=t−b−1,S_(j)(x, b) for 0≦j≦s−1. First, in function block 501,D_(i)(x)=S₀(x)S₁₊₂(X)+S₁(x)S₁₊₁(x) for i=0, 1, . . . , s−1 is computed.(Note that in this case, the Δ_(j)(x)'s do not have to be computed.)Next, in function block 502, R(x)=gcd (D₀(x), D₁(x), . . . , D_(s−1)(x))is computed. In decision block 503, a determination is made as towhether R(x) is zero. If so, the algorithm is terminated; otherwise, infunction block 44, the following are computed:

G(x)=R(x)/gcd(R(x),R(ax)),

G′(x)=G(x)/gcd(G(x),S ₀(x)), and

G″(x)=G′(x)/gcd(G′(x), S₁(x)).

[0027] (Alternatively, G(x)=R(x)/gcd (R(x), R(a⁻¹x)) may be computed.)In function block 505, we remove all roots which are also roots of S₀(x)or S₁(x), thus ensuring that we will not have to consider those roots,L, of F(x) for which S₁(L)/S₀(L) is either zero or not defined. Infunction block 506, we compute F(x)=gcd (G″(x), x² ^(m) ⁻¹+1). As in thegeneral case, we find all the roots of F(x) in function block 507 beforeentering the processing loop which, for each root of F(x) finds thelocation and magnitude of the random error as well as the magnitude ofthe burst corrections. In the processing loop, is described in FIG. 5A,for every L=a⁻¹ input at 511 which is a root of F(x),y=S₁(L)/S₀(L)=a^(j) is computed in function block 512. Then we check indecision block 513 whether j is between l and l+b−1. If it is, thenthere is no solution with this value of L; if it is not, we proceed tocompute the location of the random error and its magnitude in functionblock 514 and the magnitudes of the burst errors in function block 515.The location of the random error, y_(i), is computed byy_(i)=S₁(L_(i))/S₀(L_(i)), its magnitude, μ, is S₀(L_(i))/P(y_(i)L_(i)),and the magnitudes of the burst errors are computed by c=V_(b)⁻¹×L×(σ+y), where y=(μ·(1, y, y², . . . , y^(b−1))T, where V_(b), L, andσ are as before. Returning to FIG. 5A, in function block 510, i isincremented by “1” before the process loops back to decision block 508.

[0028] For the case of two random errors (e=2), the method is shown inFIGS. 6A and 6B. It proceeds just as in the general case e=k, withblocks 600, 601, 602, 603, and 604 of FIG. 6A performing the samefunctions as blocks 300, 301, 302, 303, and 304 in FIG. 3A. Functionblock 605 is unique to e=2; it computes:

G′(x)G(x)/gcd(G(x),Δ₀(x)),

G″(x)=G′(x)/gcd(G′(x),Δ₁(x)), and

G′″(x)=G″(x)/gcd(G″(x),Δ₂(x)).

[0029] The reason for computing G″(x)=G′(x)/gcd (G′(x), Δ₁(x)) is thatthe two roots of the polynomial Δ₀(L)+Δ₁(L)y+Δ₂(L)y² give the locationsof the two random errors, and therefore these two roots have to bedistinct; i.e., Δ₁(L) has to be different from zero. Function block 607,decision block 608, and function blocks 609 and 610, as well as blocksof FIG. 6B perforem the same functions as blocks 306, 307, 308, 309, and310 of FIG. 3A, as well as FIG. 3B (specialized, of course, to the caseof two random errors).

[0030] An important part of the invention is that we use more syndromesthan absolutely necessary. The number of syndromes is t=b+2e=s where sis at least two. The larger s, the more likely are we to obtain only one(or no) correction.

[0031] In applications such as correcting the errors in reading data offthe disk, we do not know the number of random errors a-priori. One wayof applying the algorithm to first use it for e=0, then for e=1, etc.,until e=E (the maximum number of random errors which we can correct,i.e., t=2E+b+s). The advantage of this algorithm is that we can use thedeterminants computed for e=k to compute the determinants for e=k+1.Also, when e is less than E, we get a larger protection against spuriouserrors, since t=2e+b+(s+2(E-e)). Another way of using this “excess” ofsyndromes when e is smaller than E is to search for corrections withbursts of length b+2(E−e). This enables us to obtain possiblecorrections which we would not have been able to discover otherwise.

[0032] Since the length of the burst will be variable, it would beuseful, at times, to indicate the length of the burst. Thus, we will useP^((b))(x) denote the polynomial whose roots are a^(j)(i=0, 1, . . . ,b−1), use V^((b)) and L ^((b)) to indicate the dimension of thesematrices, and similarly for σ and y _(i). The algorithm proceeds asfollows. Use the algorithm described above for e=0 using P^((b+2E))(X),V^((b+2E)), and L ^((b+2E)). Denote the polynomial F(x) by F₀(x). Havingchecked for corrections with e=0, . . . , k−1 random errors (and burstlengths b+2E, . . . , b+2(E−k+1) respectively) we use the algorithm fore=k (using P^((b+2(E−k)))(x)) up to the point where we computed gcd(G″(x), Q(x)) where Q(x)=x² ^(m) ⁻¹+1 is the field polynomial. We denotethis last polynomial by H₀(x). We then computeH_(i)(x)=H_(i−)(x)/gcd(H_(i+1)(x), F¹⁻¹(x)) for i=1, 2, . . . , k. Wewill denote H_(k)(x) by F_(k)(x). We then continue the previouslydescribed algorithm, replacing F(x) by F_(k)(x) (and, of course, σ^((b+2(E−k))), y_(i) ^((b+2(E−k))), V^((b+2(E−k)) and L ^((b+2(E−k)))),This is done for k=1, 2, . . . , E.

[0033] While the invention has been described in terms of a singlepreferred embodiment, those skilled in the art will recognize that theinvention can be practiced with modification within the spirit and scopeof the appended claims.

Having thus described our invention, what we claim as new and desire tosecure by Letters Patent is as follows:
 1. A method for finding possiblecorrections of a burst of length b and e random errors in data,comprising the steps of: inputting data and syndromes for which burstand random errors are to be corrected; processing the input data andsyndromes to find a polynomial whose roots are candidate locations, l,of the beginning of the burst errors in the data; determining magnitudesof the burst errors in the data; and determining locations andmagnitudes of any random errors, e, in the data.
 2. The method forfinding possible corrections of burst and random errors in data recitedin claim 1, further comprising the step of correcting the burst andrandom errors.
 3. The method for finding possible corrections of burstand random errors in data recited in claim 1, wherein the number ofsyndromes is t=2e+b+s, where s is at least two.
 4. The method forfinding possible corrections of burst and random errors in data recitedin claim 3, wherein the length l of the burst is variable and increasesas the number of random errors becomes smaller.
 5. The method forfinding possible corrections of burst and random errors in data recitedin claim 3, further comprising the step of computing syndromepolynomials from a received word.
 6. The method for finding possiblecorrections of burst and random errors in data recited in claim 5,wherein syndrome polynomials are computed asS_(j)(x)=Ε_(i)σ_(i+j)×p_(i)×x^(i), 0, 1, . . . , 2e+s−1 and i rangesfrom 0 to b, where for input b, t, syndromes σ_(i), 0≦i≦t−1,P(x)=II_(j)(x+a^(j))=Ε_(i)p_(i)x^(i), where j ranges from 0 to b−1, andi ranges from 0 to b.
 7. The method for finding possible corrections ofburst and random errors in data recited in claim 6, wherein themagnitudes of the random errors, μ_(i), in the data are computed as${\begin{bmatrix}\mu_{0} \\\mu_{1} \\\vdots \\\mu_{k - 1}\end{bmatrix} = {\begin{bmatrix}{P\left( {Ly}_{0} \right)} & {P\left( {Ly}_{1} \right)} & \cdots & {P\left( {Ly}_{k - 1} \right.} \\{y_{0}{P\left( {Ly}_{0} \right)}} & {y_{1}{P\left( {Ly}_{1} \right)}} & \cdots & {y_{k - 1}{P\left( {Ly}_{k - 1} \right.}} \\\vdots & \vdots & ⋰ & \vdots \\{y_{0}^{k - 1}{P\left( {Ly}_{0} \right)}} & {y_{1}^{k - 1}{P\left( {Ly}_{1} \right)}} & \cdots & {y_{k - 1}^{k - 1}{P\left( {Ly}_{k - 1} \right.}}\end{bmatrix}^{- 1}\begin{bmatrix}{S_{0}(L)} \\{S_{1}(L)} \\\vdots \\{S_{k - 1}(L)}\end{bmatrix}}},$

where k is the number of errors, e.
 8. The method for finding possiblecorrections of burst and random errors in data recited in claim 7,wherein the method is repeated for e=0, then for e=1, etc., until e=E,the maximum number of random errors which can be corrected.
 9. Anapparatus for reading recorded data from a medium and finding possiblecorrections of a burst of length b and e random errors in data,comprising: a medium storing recorded data; means for reading therecorded data and detecting digital bits in a signal generated byreading the recorded data; and error correcting means receiving thedetected digital bits as the data read from the medium, said errorcorrecting means computing syndromes for which burst and random errorsare to be corrected, processing the detected digital bits and syndromesto find a polynomial whose roots are candidate locations, l, of thebeginning of the burst errors in the data, determining a magnitude ofthe burst errors in the data, determining locations and magnitudes ofany random errors, e, in the data, and correcting the burst and randomerrors.
 10. The apparatus of claim 8, wherein the number of syndromes ist=2e+h+s, where s is at least two.
 11. The apparatus of claim 10,wherein the length l of the burst is variable and increases as thenumber of random errors becomes smaller.